#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>

typedef int SliDatatype;
typedef struct ListNode
{
	SliDatatype data;
	struct ListNode* next;
	struct ListNode* prev;
}ListNode;

ListNode* InitSlist();
void ListDestory(ListNode* phead);
void ListPrint(ListNode* phead);
void ListPushback(ListNode* phead, SliDatatype x);
void ListPushfront(ListNode* phead, SliDatatype x);
void ListPopfront(ListNode* phead, SliDatatype x);
void ListPopback(ListNode* phead, SliDatatype x);
ListNode* ListFind(ListNode* phead, SliDatatype x);
void ListInsert(ListNode* pos, SliDatatype x);
void ListErase(ListNode* pos);
void ListEmpty(ListNode* phead);
int ListSize(ListNode* phead);
int Listfull(ListNode* phead);